﻿2026-05-16T05:10:23.0247594Z ##[group]Run pnpm --filter @rebno/client test:e2e
2026-05-16T05:10:23.0248219Z [36;1mpnpm --filter @rebno/client test:e2e[0m
2026-05-16T05:10:23.0315529Z shell: /usr/bin/bash -e {0}
2026-05-16T05:10:23.0315960Z env:
2026-05-16T05:10:23.0316397Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-16T05:10:23.0317057Z   STAGING_URL: https://staging.rebno.decidel.com
2026-05-16T05:10:23.0318028Z   STAGING_INVITE_TOKEN: ***
2026-05-16T05:10:23.0318805Z   UAT_ACCOUNT_A: ***
2026-05-16T05:10:23.0319237Z   UAT_PASSWORD_A: ***
2026-05-16T05:10:23.0319613Z   UAT_ACCOUNT_B: ***
2026-05-16T05:10:23.0320411Z   UAT_PASSWORD_B: ***
2026-05-16T05:10:23.0320811Z ##[endgroup]
2026-05-16T05:10:23.3698676Z 
2026-05-16T05:10:23.3699962Z > @rebno/client@0.1.0 test:e2e /home/runner/work/rebno/rebno/apps/client
2026-05-16T05:10:23.3701534Z > playwright test
2026-05-16T05:10:23.3702112Z 
2026-05-16T05:10:24.9995654Z 
2026-05-16T05:10:24.9997806Z Running 37 tests using 1 worker
2026-05-16T05:10:24.9998966Z 
2026-05-16T05:10:34.6995966Z   ✘   1 [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) (8.4s)
2026-05-16T05:10:43.0755059Z   ✘   2 [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) (retry #1) (7.2s)
2026-05-16T05:10:51.3459697Z   ✘   3 [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) (7.1s)
2026-05-16T05:11:10.7310632Z   ✘   4 [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) (retry #1) (18.3s)
2026-05-16T05:11:18.8509712Z   ✘   5 [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) (7.0s)
2026-05-16T05:11:25.8983431Z   ✘   6 [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) (retry #1) (5.9s)
2026-05-16T05:11:34.3199559Z   ✓   7 [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block south wall (D-62 anti-revert) (7.6s)
2026-05-16T05:11:52.8151550Z   ✘   8 [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block north wall (D-62 anti-revert) (18.2s)
2026-05-16T05:12:02.3387318Z   ✓   9 [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block north wall (D-62 anti-revert) (retry #1) (8.7s)
2026-05-16T05:12:10.1795407Z   ✓  10 [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block west wall (D-62 anti-revert) (7.8s)
2026-05-16T05:12:17.3063025Z   ✓  11 [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block east wall (D-62 anti-revert) (7.1s)
2026-05-16T05:12:40.3943398Z   ✘  12 [chromium] › test/e2e/cli-08-direction-convergence.spec.ts:70:1 › CLI-08 D-58c — dual-tab direction convergence (REQ-SRV-03 server-authoritative) (22.6s)
2026-05-16T05:12:52.5806152Z   ✘  13 [chromium] › test/e2e/cli-08-direction-convergence.spec.ts:70:1 › CLI-08 D-58c — dual-tab direction convergence (REQ-SRV-03 server-authoritative) (retry #1) (10.9s)
2026-05-16T05:13:17.1042922Z   ✘  14 [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:19:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene (23.2s)
2026-05-16T05:13:41.8884050Z   ✘  15 [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:19:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene (retry #1) (23.5s)
2026-05-16T05:13:51.4257769Z   ✓  16 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block south wall (8.7s)
2026-05-16T05:13:58.9758703Z   ✓  17 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block north wall (7.5s)
2026-05-16T05:14:06.4047328Z   ✓  18 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block west wall (7.4s)
2026-05-16T05:14:24.6027045Z   ✘  19 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall (17.9s)
2026-05-16T05:14:33.6414480Z   ✓  20 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall (retry #1) (8.2s)
2026-05-16T05:14:41.3558259Z   ✘  21 [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) (7.3s)
2026-05-16T05:14:50.8226844Z   ✘  22 [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) (retry #1) (8.3s)
2026-05-16T05:15:10.1302960Z   ✘  23 [chromium] › test/e2e/cli-08-nameplate-offset.e2e.test.ts:30:1 › nameplate sits above sprite top (D-45) (18.2s)
2026-05-16T05:15:16.9720600Z   ✓  24 [chromium] › test/e2e/cli-08-nameplate-offset.e2e.test.ts:30:1 › nameplate sits above sprite top (D-45) (retry #1) (6.0s)
2026-05-16T05:15:55.3617984Z   ✓  25 [chromium] › test/e2e/cli-08-nameplate-stable.spec.ts:37:3 › CLI-08 D-45d nameplate stability under remote motion › constant-vx walk-right: nameplate_y flip count over 30s ≤ ceiling (Plan 06.4-12 D-45d gate) (38.4s)
2026-05-16T05:16:33.4472014Z   ✓  26 [chromium] › test/e2e/cli-08-nameplate-stable.spec.ts:125:3 › CLI-08 D-45d nameplate stability under remote motion › constant-vx walk-left (KeyA): symmetric stability — flips ≤ ceiling (locks symmetric fix) (38.1s)
2026-05-16T05:16:51.3644004Z   ✘  27 [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) (17.5s)
2026-05-16T05:17:10.1053246Z   ✘  28 [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) (retry #1) (17.5s)
2026-05-16T05:17:19.2721283Z   ✘  29 [chromium] › test/e2e/cli-08-resume-render.spec.ts:30:1 › cli-08-resume-render — CLI-08 resume render — Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works (7.9s)
2026-05-16T05:17:28.8489293Z   ✘  30 [chromium] › test/e2e/cli-08-resume-render.spec.ts:30:1 › cli-08-resume-render — CLI-08 resume render — Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works (retry #1) (8.3s)
2026-05-16T05:17:52.6268379Z   ✘  31 [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:60:1 › CLI-08 D-55d — B joins after A: B sees A in Stand* (no TeleIn anim for pre-existing remote) (22.5s)
2026-05-16T05:18:03.4850502Z   ✓  32 [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:60:1 › CLI-08 D-55d — B joins after A: B sees A in Stand* (no TeleIn anim for pre-existing remote) (retry #1) (10.1s)
2026-05-16T05:18:26.1384215Z   ✘  33 [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:138:1 › CLI-08 D-55d — A joined first: A DOES see TeleIn anim when B joins during session (gating preserves new-join semantics) (22.1s)
2026-05-16T05:18:36.8444701Z   ✘  34 [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:138:1 › CLI-08 D-55d — A joined first: A DOES see TeleIn anim when B joins during session (gating preserves new-join semantics) (retry #1) (9.4s)
2026-05-16T05:18:58.6862578Z   ✘  35 [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) (20.6s)
2026-05-16T05:19:20.5247135Z   ✘  36 [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) (retry #1) (20.6s)
2026-05-16T05:19:39.6664156Z   ✘  37 [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace (17.9s)
2026-05-16T05:19:58.3042429Z   ✘  38 [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace (retry #1) (17.5s)
2026-05-16T05:20:00.9262581Z   ✓  39 [chromium] › test/e2e/login-contrast.e2e.test.ts:64:3 › LoginScene contrast › heading has ≥ 4.5:1 contrast ratio on #0A0E1A background (1.8s)
2026-05-16T05:20:03.1931840Z   ✓  40 [chromium] › test/e2e/login-contrast.e2e.test.ts:72:3 › LoginScene contrast › username label has ≥ 4.5:1 contrast ratio (2.2s)
2026-05-16T05:20:04.8878691Z   ✓  41 [chromium] › test/e2e/login-contrast.e2e.test.ts:78:3 › LoginScene contrast › password label has ≥ 4.5:1 contrast ratio (1.7s)
2026-05-16T05:20:06.7810955Z   ✓  42 [chromium] › test/e2e/login-contrast.e2e.test.ts:84:3 › LoginScene contrast › username input text has ≥ 4.5:1 contrast ratio (1.9s)
2026-05-16T05:20:08.4543520Z   ✓  43 [chromium] › test/e2e/login-contrast.e2e.test.ts:90:3 › LoginScene contrast › password input text has ≥ 4.5:1 contrast ratio (1.6s)
2026-05-16T05:20:10.1093119Z   ✓  44 [chromium] › test/e2e/login-contrast.e2e.test.ts:96:3 › LoginScene contrast › submit CTA button text has ≥ 4.5:1 contrast ratio (1.6s)
2026-05-16T05:20:11.7989102Z   ✓  45 [chromium] › test/e2e/login-contrast.e2e.test.ts:104:3 › LoginScene contrast › focused input border-color is accent #22D3EE (rgb 34,211,238) (1.7s)
2026-05-16T05:20:22.6590890Z   ✘  46 [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) (10.4s)
2026-05-16T05:20:34.6320947Z   ✘  47 [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) (retry #1) (10.7s)
2026-05-16T05:20:40.9802232Z   ✓  48 [chromium] › test/e2e/logout.e2e.test.ts:51:3 › Esc menu › canvas click opens menu (D-24 secondary trigger) (5.5s)
2026-05-16T05:20:46.2542357Z   ✓  49 [chromium] › test/e2e/logout.e2e.test.ts:69:3 › Esc menu › Resume closes menu and re-engages movement without navigating (5.2s)
2026-05-16T05:20:52.0876467Z   ✘  50 [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop (5.5s)
2026-05-16T05:21:11.2788362Z   ✘  51 [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop (retry #1) (18.1s)
2026-05-16T05:21:16.4388166Z   ✓  52 [chromium] › test/e2e/sprite-state.e2e.test.ts:48:3 › sprite-state machine (D-35) + nametag (D-27a) › nameplate DOM mirror is visible for self (count >= 1) (4.3s)
2026-05-16T05:21:20.6806419Z   ✓  53 [chromium] › test/e2e/sprite-state.e2e.test.ts:61:3 › sprite-state machine (D-35) + nametag (D-27a) › nameplate text content matches logged-in username (4.2s)
2026-05-16T05:21:28.7329273Z   ✓  54 [chromium] › test/e2e/ws-kill-reconnect.e2e.test.ts:16:1 › WS-kill: login → kill WS → SDK reconnects within grace → canvas still truthy + chat round-trips (8.0s)
2026-05-16T05:21:28.8025652Z 
2026-05-16T05:21:28.8037927Z 
2026-05-16T05:21:28.8058653Z   1) [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) 
2026-05-16T05:21:28.8062244Z 
2026-05-16T05:21:28.8063032Z     Error: Camera did not pan: before=(120,160) after=(120,160)
2026-05-16T05:21:28.8063689Z 
2026-05-16T05:21:28.8064714Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:28.8065643Z 
2026-05-16T05:21:28.8066086Z     Expected: >= [32m8[39m
2026-05-16T05:21:28.8066816Z     Received:    [31m0[39m
2026-05-16T05:21:28.8067345Z 
2026-05-16T05:21:28.8067703Z       80 |     cameraDelta,
2026-05-16T05:21:28.8070506Z       81 |     `Camera did not pan: before=(${before.scrollX},${before.scrollY}) after=(${after.scrollX},${after.scrollY})`,
2026-05-16T05:21:28.8071800Z     > 82 |   ).toBeGreaterThanOrEqual(8);
2026-05-16T05:21:28.8072570Z          |     ^
2026-05-16T05:21:28.8073724Z       83 |
2026-05-16T05:21:28.8074596Z       84 |   // 8. Secondary: player moved (position changed on at least one axis).
2026-05-16T05:21:28.8075814Z       85 |   const playerMoved = after.x !== before.x || after.y !== before.y;
2026-05-16T05:21:28.8077123Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/camera-follow.e2e.test.ts:82:5
2026-05-16T05:21:28.8078042Z 
2026-05-16T05:21:28.8079087Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8081354Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/test-failed-1.png
2026-05-16T05:21:28.8083105Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8083874Z 
2026-05-16T05:21:28.8084807Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8086370Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/video.webm
2026-05-16T05:21:28.8088074Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8088813Z 
2026-05-16T05:21:28.8089854Z     Error Context: test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/error-context.md
2026-05-16T05:21:28.8091254Z 
2026-05-16T05:21:28.8092219Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8093793Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/trace.zip
2026-05-16T05:21:28.8094920Z     Usage:
2026-05-16T05:21:28.8095339Z 
2026-05-16T05:21:28.8096442Z         pnpm exec playwright show-trace test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/trace.zip
2026-05-16T05:21:28.8097644Z 
2026-05-16T05:21:28.8098610Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8099369Z 
2026-05-16T05:21:28.8100605Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8101542Z 
2026-05-16T05:21:28.8102139Z     Error: Camera did not pan: before=(120,160) after=(120,160)
2026-05-16T05:21:28.8102822Z 
2026-05-16T05:21:28.8103786Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:28.8104705Z 
2026-05-16T05:21:28.8105181Z     Expected: >= [32m8[39m
2026-05-16T05:21:28.8105952Z     Received:    [31m0[39m
2026-05-16T05:21:28.8106486Z 
2026-05-16T05:21:28.8106872Z       80 |     cameraDelta,
2026-05-16T05:21:28.8107991Z       81 |     `Camera did not pan: before=(${before.scrollX},${before.scrollY}) after=(${after.scrollX},${after.scrollY})`,
2026-05-16T05:21:28.8109175Z     > 82 |   ).toBeGreaterThanOrEqual(8);
2026-05-16T05:21:28.8109826Z          |     ^
2026-05-16T05:21:28.8110753Z       83 |
2026-05-16T05:21:28.8111992Z       84 |   // 8. Secondary: player moved (position changed on at least one axis).
2026-05-16T05:21:28.8113107Z       85 |   const playerMoved = after.x !== before.x || after.y !== before.y;
2026-05-16T05:21:28.8114348Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/camera-follow.e2e.test.ts:82:5
2026-05-16T05:21:28.8115219Z 
2026-05-16T05:21:28.8116712Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8118710Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/test-failed-1.png
2026-05-16T05:21:28.8120790Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8121554Z 
2026-05-16T05:21:28.8122517Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8124095Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/video.webm
2026-05-16T05:21:28.8125878Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8126657Z 
2026-05-16T05:21:28.8127714Z     Error Context: test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/error-context.md
2026-05-16T05:21:28.8128924Z 
2026-05-16T05:21:28.8129930Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8131966Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/trace.zip
2026-05-16T05:21:28.8133146Z     Usage:
2026-05-16T05:21:28.8133763Z 
2026-05-16T05:21:28.8135237Z         pnpm exec playwright show-trace test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/trace.zip
2026-05-16T05:21:28.8136567Z 
2026-05-16T05:21:28.8137500Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8138335Z 
2026-05-16T05:21:28.8139739Z   2) [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) 
2026-05-16T05:21:28.8141229Z 
2026-05-16T05:21:28.8145186Z     Error: Expected ≥3 distinct frame keys during 1s hold; observed 1 (samples=0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000)
2026-05-16T05:21:28.8148303Z 
2026-05-16T05:21:28.8149419Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:28.8150654Z 
2026-05-16T05:21:28.8151127Z     Expected: >= [32m3[39m
2026-05-16T05:21:28.8152244Z     Received:    [31m1[39m
2026-05-16T05:21:28.8152741Z 
2026-05-16T05:21:28.8153108Z       67 |     unique.size,
2026-05-16T05:21:28.8154521Z       68 |     `Expected ≥3 distinct frame keys during 1s hold; observed ${unique.size} (samples=${samples.join(',')})`,
2026-05-16T05:21:28.8155757Z     > 69 |   ).toBeGreaterThanOrEqual(3);
2026-05-16T05:21:28.8156524Z          |     ^
2026-05-16T05:21:28.8157081Z       70 |
2026-05-16T05:21:28.8158293Z       71 |   // 4. Each observed frame must match a NaviRun* pattern (sanity).
2026-05-16T05:21:28.8159231Z       72 |   for (const f of unique) {
2026-05-16T05:21:28.8160530Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-anim.e2e.test.ts:69:5
2026-05-16T05:21:28.8161387Z 
2026-05-16T05:21:28.8162373Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8163963Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-16T05:21:28.8165705Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8166478Z 
2026-05-16T05:21:28.8167396Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8168792Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/video.webm
2026-05-16T05:21:28.8170533Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8171281Z 
2026-05-16T05:21:28.8172303Z     Error Context: test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-16T05:21:28.8173438Z 
2026-05-16T05:21:28.8174458Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8175996Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T05:21:28.8177124Z     Usage:
2026-05-16T05:21:28.8177474Z 
2026-05-16T05:21:28.8178535Z         pnpm exec playwright show-trace test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T05:21:28.8179627Z 
2026-05-16T05:21:28.8180796Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8181563Z 
2026-05-16T05:21:28.8182497Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8183344Z 
2026-05-16T05:21:28.8184268Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:28.8185143Z 
2026-05-16T05:21:28.8185670Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T05:21:28.8186458Z     Expected: visible
2026-05-16T05:21:28.8187081Z     Timeout: 15000ms
2026-05-16T05:21:28.8187749Z     Error: element(s) not found
2026-05-16T05:21:28.8188254Z 
2026-05-16T05:21:28.8189013Z     Call log:
2026-05-16T05:21:28.8189830Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T05:21:28.8191243Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T05:21:28.8191980Z 
2026-05-16T05:21:28.8192182Z 
2026-05-16T05:21:28.8192559Z        at fixtures.ts:172
2026-05-16T05:21:28.8193051Z 
2026-05-16T05:21:28.8193387Z       170 |  */
2026-05-16T05:21:28.8194238Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T05:21:28.8195890Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T05:21:28.8197032Z           |                                                                ^
2026-05-16T05:21:28.8197841Z       173 |     timeout: 15_000,
2026-05-16T05:21:28.8198494Z       174 |   });
2026-05-16T05:21:28.8199117Z       175 | }
2026-05-16T05:21:28.8200357Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T05:21:28.8202219Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-anim.e2e.test.ts:38:9
2026-05-16T05:21:28.8203075Z 
2026-05-16T05:21:28.8203924Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8205422Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-16T05:21:28.8206992Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8207695Z 
2026-05-16T05:21:28.8208570Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8210449Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-16T05:21:28.8212255Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8213048Z 
2026-05-16T05:21:28.8214206Z     Error Context: test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-16T05:21:28.8215402Z 
2026-05-16T05:21:28.8216371Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8218022Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T05:21:28.8219275Z     Usage:
2026-05-16T05:21:28.8219690Z 
2026-05-16T05:21:28.8221129Z         pnpm exec playwright show-trace test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T05:21:28.8222399Z 
2026-05-16T05:21:28.8223333Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8224137Z 
2026-05-16T05:21:28.8225532Z   3) [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) 
2026-05-16T05:21:28.8227122Z 
2026-05-16T05:21:28.8227731Z     Error: Camera scrollX did not advance: before=120 after=120
2026-05-16T05:21:28.8228418Z 
2026-05-16T05:21:28.8229414Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:28.8230649Z 
2026-05-16T05:21:28.8231148Z     Expected: > [32m15[39m
2026-05-16T05:21:28.8231961Z     Received:   [31m0[39m
2026-05-16T05:21:28.8232807Z 
2026-05-16T05:21:28.8233332Z       83 |     (after as number) - (before as number),
2026-05-16T05:21:28.8234412Z       84 |     `Camera scrollX did not advance: before=${before} after=${after}`,
2026-05-16T05:21:28.8235446Z     > 85 |   ).toBeGreaterThan(15);
2026-05-16T05:21:28.8236148Z          |     ^
2026-05-16T05:21:28.8236749Z       86 | });
2026-05-16T05:21:28.8237317Z       87 |
2026-05-16T05:21:28.8238187Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-camera.e2e.test.ts:85:5
2026-05-16T05:21:28.8239025Z 
2026-05-16T05:21:28.8240013Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8241890Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-16T05:21:28.8243602Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8244351Z 
2026-05-16T05:21:28.8245320Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8246869Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/video.webm
2026-05-16T05:21:28.8248489Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8249215Z 
2026-05-16T05:21:28.8250495Z     Error Context: test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-16T05:21:28.8251660Z 
2026-05-16T05:21:28.8252721Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8254329Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T05:21:28.8255459Z     Usage:
2026-05-16T05:21:28.8255925Z 
2026-05-16T05:21:28.8257027Z         pnpm exec playwright show-trace test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T05:21:28.8258243Z 
2026-05-16T05:21:28.8259141Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8259904Z 
2026-05-16T05:21:28.8261087Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8261901Z 
2026-05-16T05:21:28.8262456Z     Error: Camera scrollX did not advance: before=120 after=120
2026-05-16T05:21:28.8263126Z 
2026-05-16T05:21:28.8264042Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:28.8265323Z 
2026-05-16T05:21:28.8265792Z     Expected: > [32m15[39m
2026-05-16T05:21:28.8266665Z     Received:   [31m0[39m
2026-05-16T05:21:28.8267180Z 
2026-05-16T05:21:28.8267655Z       83 |     (after as number) - (before as number),
2026-05-16T05:21:28.8268966Z       84 |     `Camera scrollX did not advance: before=${before} after=${after}`,
2026-05-16T05:21:28.8270008Z     > 85 |   ).toBeGreaterThan(15);
2026-05-16T05:21:28.8271361Z          |     ^
2026-05-16T05:21:28.8271954Z       86 | });
2026-05-16T05:21:28.8272509Z       87 |
2026-05-16T05:21:28.8273749Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-camera.e2e.test.ts:85:5
2026-05-16T05:21:28.8274540Z 
2026-05-16T05:21:28.8275371Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8276717Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-16T05:21:28.8278425Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8279155Z 
2026-05-16T05:21:28.8280328Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8281919Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-16T05:21:28.8283678Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8284388Z 
2026-05-16T05:21:28.8285430Z     Error Context: test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-16T05:21:28.8286540Z 
2026-05-16T05:21:28.8287443Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8288913Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T05:21:28.8290267Z     Usage:
2026-05-16T05:21:28.8290676Z 
2026-05-16T05:21:28.8291806Z         pnpm exec playwright show-trace test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T05:21:28.8292983Z 
2026-05-16T05:21:28.8293870Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8294567Z 
2026-05-16T05:21:28.8295942Z   4) [chromium] › test/e2e/cli-08-direction-convergence.spec.ts:70:1 › CLI-08 D-58c — dual-tab direction convergence (REQ-SRV-03 server-authoritative) 
2026-05-16T05:21:28.8297125Z 
2026-05-16T05:21:28.8297932Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:28.8298703Z 
2026-05-16T05:21:28.8299193Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T05:21:28.8299956Z     Expected: visible
2026-05-16T05:21:28.8300740Z     Timeout: 15000ms
2026-05-16T05:21:28.8301643Z     Error: element(s) not found
2026-05-16T05:21:28.8302103Z 
2026-05-16T05:21:28.8302444Z     Call log:
2026-05-16T05:21:28.8303240Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T05:21:28.8304323Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T05:21:28.8304986Z 
2026-05-16T05:21:28.8305173Z 
2026-05-16T05:21:28.8305512Z        at fixtures.ts:172
2026-05-16T05:21:28.8305957Z 
2026-05-16T05:21:28.8306576Z       170 |  */
2026-05-16T05:21:28.8307462Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T05:21:28.8308658Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T05:21:28.8309717Z           |                                                                ^
2026-05-16T05:21:28.8310851Z       173 |     timeout: 15_000,
2026-05-16T05:21:28.8311488Z       174 |   });
2026-05-16T05:21:28.8312032Z       175 | }
2026-05-16T05:21:28.8312991Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T05:21:28.8314503Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-direction-convergence.spec.ts:95:11
2026-05-16T05:21:28.8315396Z 
2026-05-16T05:21:28.8316316Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8317825Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium/test-failed-1.png
2026-05-16T05:21:28.8319449Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8320353Z 
2026-05-16T05:21:28.8321269Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8322920Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium/test-failed-2.png
2026-05-16T05:21:28.8324617Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8325358Z 
2026-05-16T05:21:28.8326274Z     Error Context: test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium/error-context.md
2026-05-16T05:21:28.8327224Z 
2026-05-16T05:21:28.8328035Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8329317Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium/trace.zip
2026-05-16T05:21:28.8330497Z     Usage:
2026-05-16T05:21:28.8330825Z 
2026-05-16T05:21:28.8331980Z         pnpm exec playwright show-trace test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium/trace.zip
2026-05-16T05:21:28.8333006Z 
2026-05-16T05:21:28.8333751Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8334350Z 
2026-05-16T05:21:28.8335091Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8336010Z 
2026-05-16T05:21:28.8337625Z     Error: Test 1 — pageA localDirection must be R after walk-right (Plan 06.4 D-58c server-broadcast facing per REQ-SRV-03; deriveFacing(vx>0, 0, lastFacing) → R per packages/game-logic/src/sprite-state-machine.ts:62-67).
2026-05-16T05:21:28.8338979Z 
2026-05-16T05:21:28.8339800Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-16T05:21:28.8341038Z 
2026-05-16T05:21:28.8341406Z     Expected: [32m"R"[39m
2026-05-16T05:21:28.8341971Z     Received: [31m"D"[39m
2026-05-16T05:21:28.8342344Z 
2026-05-16T05:21:28.8342866Z       116 |         'deriveFacing(vx>0, 0, lastFacing) → R per ' +
2026-05-16T05:21:28.8343722Z       117 |         'packages/game-logic/src/sprite-state-machine.ts:62-67).',
2026-05-16T05:21:28.8344426Z     > 118 |     ).toBe('R');
2026-05-16T05:21:28.8344920Z           |       ^
2026-05-16T05:21:28.8345381Z       119 |     expect(
2026-05-16T05:21:28.8345904Z       120 |       remoteDirT1,
2026-05-16T05:21:28.8346778Z       121 |       'Test 1 — pageB firstRemoteDirection must be R (server-broadcast ' +
2026-05-16T05:21:28.8347955Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-direction-convergence.spec.ts:118:7
2026-05-16T05:21:28.8348722Z 
2026-05-16T05:21:28.8349484Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8351055Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium-retry1/test-failed-1.png
2026-05-16T05:21:28.8352666Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8353429Z 
2026-05-16T05:21:28.8354351Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8355878Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium-retry1/test-failed-2.png
2026-05-16T05:21:28.8357578Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8358256Z 
2026-05-16T05:21:28.8359422Z     Error Context: test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium-retry1/error-context.md
2026-05-16T05:21:28.8360870Z 
2026-05-16T05:21:28.8361778Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8363289Z     test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium-retry1/trace.zip
2026-05-16T05:21:28.8364396Z     Usage:
2026-05-16T05:21:28.8364739Z 
2026-05-16T05:21:28.8366022Z         pnpm exec playwright show-trace test-results/cli-08-direction-convergen-cbd92-RV-03-server-authoritative--chromium-retry1/trace.zip
2026-05-16T05:21:28.8367448Z 
2026-05-16T05:21:28.8368287Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8369238Z 
2026-05-16T05:21:28.8370999Z   5) [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:19:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene 
2026-05-16T05:21:28.8372588Z 
2026-05-16T05:21:28.8373395Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:28.8374243Z 
2026-05-16T05:21:28.8374756Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T05:21:28.8375843Z     Expected: visible
2026-05-16T05:21:28.8376411Z     Timeout: 15000ms
2026-05-16T05:21:28.8377024Z     Error: element(s) not found
2026-05-16T05:21:28.8377488Z 
2026-05-16T05:21:28.8377819Z     Call log:
2026-05-16T05:21:28.8378656Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T05:21:28.8379791Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T05:21:28.8380791Z 
2026-05-16T05:21:28.8380994Z 
2026-05-16T05:21:28.8381350Z        at fixtures.ts:172
2026-05-16T05:21:28.8381831Z 
2026-05-16T05:21:28.8382181Z       170 |  */
2026-05-16T05:21:28.8383056Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T05:21:28.8384279Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T05:21:28.8385283Z           |                                                                ^
2026-05-16T05:21:28.8385968Z       173 |     timeout: 15_000,
2026-05-16T05:21:28.8386483Z       174 |   });
2026-05-16T05:21:28.8386931Z       175 | }
2026-05-16T05:21:28.8387793Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T05:21:28.8389280Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-dup-login.e2e.test.ts:40:13
2026-05-16T05:21:28.8390586Z 
2026-05-16T05:21:28.8391690Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8393310Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/test-failed-1.png
2026-05-16T05:21:28.8395028Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8395746Z 
2026-05-16T05:21:28.8396649Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8398128Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/test-failed-2.png
2026-05-16T05:21:28.8399773Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8400843Z 
2026-05-16T05:21:28.8401838Z     Error Context: test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/error-context.md
2026-05-16T05:21:28.8402883Z 
2026-05-16T05:21:28.8403796Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8405216Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/trace.zip
2026-05-16T05:21:28.8406565Z     Usage:
2026-05-16T05:21:28.8406933Z 
2026-05-16T05:21:28.8408006Z         pnpm exec playwright show-trace test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/trace.zip
2026-05-16T05:21:28.8409117Z 
2026-05-16T05:21:28.8409944Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8411174Z 
2026-05-16T05:21:28.8412001Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8412761Z 
2026-05-16T05:21:28.8413581Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:28.8414349Z 
2026-05-16T05:21:28.8414739Z     Locator: locator('#username')
2026-05-16T05:21:28.8415368Z     Expected: visible
2026-05-16T05:21:28.8415926Z     Timeout: 15000ms
2026-05-16T05:21:28.8416685Z     Error: element(s) not found
2026-05-16T05:21:28.8417149Z 
2026-05-16T05:21:28.8417468Z     Call log:
2026-05-16T05:21:28.8418230Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T05:21:28.8419156Z     [2m  - waiting for locator('#username')[22m
2026-05-16T05:21:28.8419721Z 
2026-05-16T05:21:28.8419925Z 
2026-05-16T05:21:28.8420982Z       45 |       // SOURCE: GameScene.ts onForceReset transitions to LoginScene with an eviction banner.
2026-05-16T05:21:28.8422338Z       46 |       // The force_reset s2c event causes A1 to leave the room and start LoginScene.
2026-05-16T05:21:28.8423610Z     > 47 |       await expect(pageA1.locator('#username')).toBeVisible({ timeout: 15_000 });
2026-05-16T05:21:28.8424608Z          |                                                 ^
2026-05-16T05:21:28.8425291Z       48 |
2026-05-16T05:21:28.8425917Z       49 |       // [int->REQ-SRV-03] [int->REQ-CLI-08]
2026-05-16T05:21:28.8426849Z       50 |       // D-51c cycle-5 no-banner-loop assertion (Plan 06.4-09). Sample
2026-05-16T05:21:28.8428079Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-dup-login.e2e.test.ts:47:49
2026-05-16T05:21:28.8428912Z 
2026-05-16T05:21:28.8429838Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8431601Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/test-failed-1.png
2026-05-16T05:21:28.8433263Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8434007Z 
2026-05-16T05:21:28.8434873Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8436420Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/test-failed-2.png
2026-05-16T05:21:28.8438047Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8439019Z 
2026-05-16T05:21:28.8440246Z     Error Context: test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/error-context.md
2026-05-16T05:21:28.8441358Z 
2026-05-16T05:21:28.8442255Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8443642Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/trace.zip
2026-05-16T05:21:28.8444893Z     Usage:
2026-05-16T05:21:28.8445222Z 
2026-05-16T05:21:28.8446168Z         pnpm exec playwright show-trace test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/trace.zip
2026-05-16T05:21:28.8447224Z 
2026-05-16T05:21:28.8448015Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8448622Z 
2026-05-16T05:21:28.8449662Z   6) [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) 
2026-05-16T05:21:28.8450873Z 
2026-05-16T05:21:28.8455129Z     Error: D-41 regression: expected ≥3 distinct localFrame keys during 1s KeyD hold; observed 1 (samples=[0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000]). Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.
2026-05-16T05:21:28.8458558Z 
2026-05-16T05:21:28.8459425Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:28.8460618Z 
2026-05-16T05:21:28.8461062Z     Expected: >= [32m3[39m
2026-05-16T05:21:28.8461644Z     Received:    [31m1[39m
2026-05-16T05:21:28.8462051Z 
2026-05-16T05:21:28.8462549Z       83 |       `observed ${unique.size} (samples=[${samples.join(',')}]). ` +
2026-05-16T05:21:28.8463785Z       84 |       `Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.`,
2026-05-16T05:21:28.8464751Z     > 85 |   ).toBeGreaterThanOrEqual(3);
2026-05-16T05:21:28.8465311Z          |     ^
2026-05-16T05:21:28.8465846Z       86 |
2026-05-16T05:21:28.8467143Z       87 |   // 5. At least one observed frame key must contain 'Run' — confirms we left Stand state.
2026-05-16T05:21:28.8468184Z       88 |   const hasRunFrame = [...unique].some((f) => f.includes('Run'));
2026-05-16T05:21:28.8469242Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-local-anim.e2e.test.ts:85:5
2026-05-16T05:21:28.8469951Z 
2026-05-16T05:21:28.8470927Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8472311Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/test-failed-1.png
2026-05-16T05:21:28.8473936Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8474627Z 
2026-05-16T05:21:28.8475542Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8476928Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/video.webm
2026-05-16T05:21:28.8478448Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8479107Z 
2026-05-16T05:21:28.8480287Z     Error Context: test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/error-context.md
2026-05-16T05:21:28.8481519Z 
2026-05-16T05:21:28.8482377Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8483815Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/trace.zip
2026-05-16T05:21:28.8485137Z     Usage:
2026-05-16T05:21:28.8485487Z 
2026-05-16T05:21:28.8486524Z         pnpm exec playwright show-trace test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/trace.zip
2026-05-16T05:21:28.8487736Z 
2026-05-16T05:21:28.8488619Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8489611Z 
2026-05-16T05:21:28.8490635Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8491319Z 
2026-05-16T05:21:28.8495878Z     Error: D-41 regression: expected ≥3 distinct localFrame keys during 1s KeyD hold; observed 1 (samples=[0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000]). Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.
2026-05-16T05:21:28.8501040Z 
2026-05-16T05:21:28.8502043Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:28.8502962Z 
2026-05-16T05:21:28.8503440Z     Expected: >= [32m3[39m
2026-05-16T05:21:28.8504150Z     Received:    [31m1[39m
2026-05-16T05:21:28.8504618Z 
2026-05-16T05:21:28.8505200Z       83 |       `observed ${unique.size} (samples=[${samples.join(',')}]). ` +
2026-05-16T05:21:28.8506672Z       84 |       `Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.`,
2026-05-16T05:21:28.8507855Z     > 85 |   ).toBeGreaterThanOrEqual(3);
2026-05-16T05:21:28.8508579Z          |     ^
2026-05-16T05:21:28.8509120Z       86 |
2026-05-16T05:21:28.8510429Z       87 |   // 5. At least one observed frame key must contain 'Run' — confirms we left Stand state.
2026-05-16T05:21:28.8511698Z       88 |   const hasRunFrame = [...unique].some((f) => f.includes('Run'));
2026-05-16T05:21:28.8512941Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-local-anim.e2e.test.ts:85:5
2026-05-16T05:21:28.8513760Z 
2026-05-16T05:21:28.8514958Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8516556Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/test-failed-1.png
2026-05-16T05:21:28.8518261Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8518954Z 
2026-05-16T05:21:28.8519848Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8521678Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/video.webm
2026-05-16T05:21:28.8523633Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8524356Z 
2026-05-16T05:21:28.8525355Z     Error Context: test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/error-context.md
2026-05-16T05:21:28.8526416Z 
2026-05-16T05:21:28.8527369Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8529217Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/trace.zip
2026-05-16T05:21:28.8530567Z     Usage:
2026-05-16T05:21:28.8530963Z 
2026-05-16T05:21:28.8532074Z         pnpm exec playwright show-trace test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/trace.zip
2026-05-16T05:21:28.8533233Z 
2026-05-16T05:21:28.8534114Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8534857Z 
2026-05-16T05:21:28.8536182Z   7) [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) 
2026-05-16T05:21:28.8537312Z 
2026-05-16T05:21:28.8538130Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeAttached[2m([22m[2m)[22m failed
2026-05-16T05:21:28.8538878Z 
2026-05-16T05:21:28.8539564Z     Locator: locator('[data-nameplate="***"]')
2026-05-16T05:21:28.8540624Z     Expected: attached
2026-05-16T05:21:28.8541187Z     Timeout: 10000ms
2026-05-16T05:21:28.8541844Z     Error: element(s) not found
2026-05-16T05:21:28.8542350Z 
2026-05-16T05:21:28.8542687Z     Call log:
2026-05-16T05:21:28.8543533Z     [2m  - Expect "toBeAttached" with timeout 10000ms[22m
2026-05-16T05:21:28.8544606Z     [2m  - waiting for locator('[data-nameplate="***"]')[22m
2026-05-16T05:21:28.8545163Z 
2026-05-16T05:21:28.8545326Z 
2026-05-16T05:21:28.8545626Z       46 |     await expect(
2026-05-16T05:21:28.8546328Z       47 |       a.locator(`[data-nameplate="${accountA.username}"]`),
2026-05-16T05:21:28.8547154Z     > 48 |     ).toBeAttached({ timeout: 10_000 });
2026-05-16T05:21:28.8547921Z          |       ^
2026-05-16T05:21:28.8548489Z       49 |
2026-05-16T05:21:28.8549107Z       50 |     const localColor = await a
2026-05-16T05:21:28.8549991Z       51 |       .locator(`[data-nameplate="${accountA.username}"]`)
2026-05-16T05:21:28.8551670Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-nameplate.e2e.test.ts:48:7
2026-05-16T05:21:28.8552499Z 
2026-05-16T05:21:28.8553421Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8554974Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-16T05:21:28.8556636Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8557380Z 
2026-05-16T05:21:28.8558722Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8560468Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium/test-failed-2.png
2026-05-16T05:21:28.8562362Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8563147Z 
2026-05-16T05:21:28.8564130Z     Error Context: test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-16T05:21:28.8565586Z 
2026-05-16T05:21:28.8566784Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8568618Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T05:21:28.8569866Z     Usage:
2026-05-16T05:21:28.8570686Z 
2026-05-16T05:21:28.8571761Z         pnpm exec playwright show-trace test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T05:21:28.8572904Z 
2026-05-16T05:21:28.8573734Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8574444Z 
2026-05-16T05:21:28.8575265Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8575978Z 
2026-05-16T05:21:28.8576780Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeAttached[2m([22m[2m)[22m failed
2026-05-16T05:21:28.8577588Z 
2026-05-16T05:21:28.8578224Z     Locator: locator('[data-nameplate="***"]')
2026-05-16T05:21:28.8578932Z     Expected: attached
2026-05-16T05:21:28.8579494Z     Timeout: 10000ms
2026-05-16T05:21:28.8580278Z     Error: element(s) not found
2026-05-16T05:21:28.8580758Z 
2026-05-16T05:21:28.8581083Z     Call log:
2026-05-16T05:21:28.8581891Z     [2m  - Expect "toBeAttached" with timeout 10000ms[22m
2026-05-16T05:21:28.8583007Z     [2m  - waiting for locator('[data-nameplate="***"]')[22m
2026-05-16T05:21:28.8583659Z 
2026-05-16T05:21:28.8583841Z 
2026-05-16T05:21:28.8584184Z       46 |     await expect(
2026-05-16T05:21:28.8584991Z       47 |       a.locator(`[data-nameplate="${accountA.username}"]`),
2026-05-16T05:21:28.8585876Z     > 48 |     ).toBeAttached({ timeout: 10_000 });
2026-05-16T05:21:28.8586559Z          |       ^
2026-05-16T05:21:28.8587103Z       49 |
2026-05-16T05:21:28.8587689Z       50 |     const localColor = await a
2026-05-16T05:21:28.8588541Z       51 |       .locator(`[data-nameplate="${accountA.username}"]`)
2026-05-16T05:21:28.8589706Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-nameplate.e2e.test.ts:48:7
2026-05-16T05:21:28.8590784Z 
2026-05-16T05:21:28.8591726Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8593313Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-16T05:21:28.8595290Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8595990Z 
2026-05-16T05:21:28.8596908Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8598451Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium-retry1/test-failed-2.png
2026-05-16T05:21:28.8600444Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8601468Z 
2026-05-16T05:21:28.8602508Z     Error Context: test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-16T05:21:28.8603602Z 
2026-05-16T05:21:28.8604499Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8605994Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T05:21:28.8607131Z     Usage:
2026-05-16T05:21:28.8607507Z 
2026-05-16T05:21:28.8608628Z         pnpm exec playwright show-trace test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T05:21:28.8609853Z 
2026-05-16T05:21:28.8610932Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8611654Z 
2026-05-16T05:21:28.8613478Z   8) [chromium] › test/e2e/cli-08-resume-render.spec.ts:30:1 › cli-08-resume-render — CLI-08 resume render — Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works 
2026-05-16T05:21:28.8614825Z 
2026-05-16T05:21:28.8615784Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoContain[2m([22m[32mexpected[39m[2m) // indexOf[22m
2026-05-16T05:21:28.8616667Z 
2026-05-16T05:21:28.8617174Z     Expected value: [32m"mvp"[39m
2026-05-16T05:21:28.8618578Z     Received array: [31m["atlas-mvp", "555f81b6-0c21-4f29-9db4-2ce7a9794dae", "00d4c095-5102-47b3-a34f-682fbd51c330"][39m
2026-05-16T05:21:28.8619548Z 
2026-05-16T05:21:28.8619872Z       87 |   );
2026-05-16T05:21:28.8620842Z       88 |   // The 'mvp' atlas is loaded by BootScene on the cookie reload path (06-14).
2026-05-16T05:21:28.8621810Z     > 89 |   expect(loadedTextures).toContain('mvp');
2026-05-16T05:21:28.8622462Z          |                          ^
2026-05-16T05:21:28.8622985Z       90 |
2026-05-16T05:21:28.8623693Z       91 |   // 5. Chat round-trip: send a message and assert the chat line appears.
2026-05-16T05:21:28.8624551Z       92 |   await page.keyboard.press('Enter');
2026-05-16T05:21:28.8625497Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-resume-render.spec.ts:89:26
2026-05-16T05:21:28.8626214Z 
2026-05-16T05:21:28.8627011Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8628585Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium/test-failed-1.png
2026-05-16T05:21:28.8630761Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8631542Z 
2026-05-16T05:21:28.8632274Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8633513Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium/video.webm
2026-05-16T05:21:28.8635133Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8635732Z 
2026-05-16T05:21:28.8636556Z     Error Context: test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium/error-context.md
2026-05-16T05:21:28.8637440Z 
2026-05-16T05:21:28.8638179Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8639388Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium/trace.zip
2026-05-16T05:21:28.8640527Z     Usage:
2026-05-16T05:21:28.8640836Z 
2026-05-16T05:21:28.8641722Z         pnpm exec playwright show-trace test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium/trace.zip
2026-05-16T05:21:28.8642673Z 
2026-05-16T05:21:28.8643358Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8643936Z 
2026-05-16T05:21:28.8644639Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8645237Z 
2026-05-16T05:21:28.8646061Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoContain[2m([22m[32mexpected[39m[2m) // indexOf[22m
2026-05-16T05:21:28.8646851Z 
2026-05-16T05:21:28.8647302Z     Expected value: [32m"mvp"[39m
2026-05-16T05:21:28.8648697Z     Received array: [31m["atlas-mvp", "345a6b4e-e70b-458b-9c4e-e833595ee316", "25412489-2885-44b8-9c7f-d6e4ca8277cb"][39m
2026-05-16T05:21:28.8649613Z 
2026-05-16T05:21:28.8649921Z       87 |   );
2026-05-16T05:21:28.8650977Z       88 |   // The 'mvp' atlas is loaded by BootScene on the cookie reload path (06-14).
2026-05-16T05:21:28.8651927Z     > 89 |   expect(loadedTextures).toContain('mvp');
2026-05-16T05:21:28.8652620Z          |                          ^
2026-05-16T05:21:28.8653237Z       90 |
2026-05-16T05:21:28.8654138Z       91 |   // 5. Chat round-trip: send a message and assert the chat line appears.
2026-05-16T05:21:28.8655132Z       92 |   await page.keyboard.press('Enter');
2026-05-16T05:21:28.8656223Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-resume-render.spec.ts:89:26
2026-05-16T05:21:28.8657012Z 
2026-05-16T05:21:28.8658096Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8659709Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium-retry1/test-failed-1.png
2026-05-16T05:21:28.8661626Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8662602Z 
2026-05-16T05:21:28.8663476Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8664881Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium-retry1/video.webm
2026-05-16T05:21:28.8666675Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8667695Z 
2026-05-16T05:21:28.8668661Z     Error Context: test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium-retry1/error-context.md
2026-05-16T05:21:28.8669836Z 
2026-05-16T05:21:28.8671063Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8672488Z     test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium-retry1/trace.zip
2026-05-16T05:21:28.8673498Z     Usage:
2026-05-16T05:21:28.8673910Z 
2026-05-16T05:21:28.8675090Z         pnpm exec playwright show-trace test-results/cli-08-resume-render-cli-0-3a9cd-enders-within-5s-chat-works-chromium-retry1/trace.zip
2026-05-16T05:21:28.8676334Z 
2026-05-16T05:21:28.8677205Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8677920Z 
2026-05-16T05:21:28.8679528Z   9) [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:138:1 › CLI-08 D-55d — A joined first: A DOES see TeleIn anim when B joins during session (gating preserves new-join semantics) 
2026-05-16T05:21:28.8681138Z 
2026-05-16T05:21:28.8681954Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:28.8682676Z 
2026-05-16T05:21:28.8683141Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T05:21:28.8684129Z     Expected: visible
2026-05-16T05:21:28.8684815Z     Timeout: 15000ms
2026-05-16T05:21:28.8685409Z     Error: element(s) not found
2026-05-16T05:21:28.8685877Z 
2026-05-16T05:21:28.8686186Z     Call log:
2026-05-16T05:21:28.8686951Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T05:21:28.8688004Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T05:21:28.8688639Z 
2026-05-16T05:21:28.8688801Z 
2026-05-16T05:21:28.8689290Z        at fixtures.ts:172
2026-05-16T05:21:28.8689688Z 
2026-05-16T05:21:28.8690007Z       170 |  */
2026-05-16T05:21:28.8690995Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T05:21:28.8691961Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T05:21:28.8692782Z           |                                                                ^
2026-05-16T05:21:28.8693379Z       173 |     timeout: 15_000,
2026-05-16T05:21:28.8693825Z       174 |   });
2026-05-16T05:21:28.8694197Z       175 | }
2026-05-16T05:21:28.8694936Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T05:21:28.8696406Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:176:11
2026-05-16T05:21:28.8697118Z 
2026-05-16T05:21:28.8697841Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8699058Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium/test-failed-1.png
2026-05-16T05:21:28.8700963Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8701517Z 
2026-05-16T05:21:28.8702204Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.8703776Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium/test-failed-2.png
2026-05-16T05:21:28.8705362Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8706012Z 
2026-05-16T05:21:28.8706911Z     Error Context: test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium/error-context.md
2026-05-16T05:21:28.8707895Z 
2026-05-16T05:21:28.8708679Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.8710283Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium/trace.zip
2026-05-16T05:21:28.8711384Z     Usage:
2026-05-16T05:21:28.8711701Z 
2026-05-16T05:21:28.8712689Z         pnpm exec playwright show-trace test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium/trace.zip
2026-05-16T05:21:28.8713766Z 
2026-05-16T05:21:28.8714501Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8715029Z 
2026-05-16T05:21:28.8715733Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.8716394Z 
2026-05-16T05:21:28.8725212Z     Error: Plan 06.4-11 D-55d — A MUST see B's TeleIn anim (≥1 TeleIn/TeleOut frame key in the 800 ms post-B-join window). SOURCE: extracted/client-5-8/objects/0042-player/events/Other-7.gml:7-8 — fresh-join semantics include the TeleIn anim; gating only suppresses the initial-snapshot batch, not subsequent joins. All samples: [0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000, 0000-NaviStandD_000].
2026-05-16T05:21:28.8729086Z 
2026-05-16T05:21:28.8731112Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:28.8731876Z 
2026-05-16T05:21:28.8732190Z     Expected: > [32m0[39m
2026-05-16T05:21:28.8732751Z     Received:   [31m0[39m
2026-05-16T05:21:28.8733399Z 
2026-05-16T05:21:28.8733934Z       196 |         'suppresses the initial-snapshot batch, not subsequent joins. ' +
2026-05-16T05:21:28.8791319Z       197 |         `All samples: [${samplesA.join(', ')}].`,
2026-05-16T05:21:28.8810840Z     > 198 |     ).toBeGreaterThan(0);
2026-05-16T05:21:28.8850854Z           |       ^
2026-05-16T05:21:28.8870682Z       199 |   } finally {
2026-05-16T05:21:28.8910934Z       200 |     await ctxA.close();
2026-05-16T05:21:28.8930784Z       201 |     await ctxB.close();
2026-05-16T05:21:28.8965938Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:198:7
2026-05-16T05:21:28.9010436Z 
2026-05-16T05:21:28.9031924Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.9034128Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium-retry1/test-failed-1.png
2026-05-16T05:21:28.9035833Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.9036537Z 
2026-05-16T05:21:28.9037367Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:28.9038868Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium-retry1/test-failed-2.png
2026-05-16T05:21:28.9040704Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.9041329Z 
2026-05-16T05:21:28.9042248Z     Error Context: test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium-retry1/error-context.md
2026-05-16T05:21:28.9043289Z 
2026-05-16T05:21:28.9044265Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:28.9045694Z     test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium-retry1/trace.zip
2026-05-16T05:21:28.9046738Z     Usage:
2026-05-16T05:21:28.9047062Z 
2026-05-16T05:21:28.9048153Z         pnpm exec playwright show-trace test-results/cli-08-snapshot-no-spawn-a-ece4a-eserves-new-join-semantics--chromium-retry1/trace.zip
2026-05-16T05:21:28.9049263Z 
2026-05-16T05:21:28.9050246Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:28.9050879Z 
2026-05-16T05:21:29.2003738Z   10) [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) 
2026-05-16T05:21:29.2006164Z 
2026-05-16T05:21:29.2007119Z     Error: RoomRenderer.renderNew must emit floor tile sprites for mvp-room (D-40 verify-bail flip / Plan 06.1-05)
2026-05-16T05:21:29.2008088Z 
2026-05-16T05:21:29.2008977Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:29.2009855Z 
2026-05-16T05:21:29.2010535Z     Expected: > [32m0[39m
2026-05-16T05:21:29.2011268Z     Received:   [31m0[39m
2026-05-16T05:21:29.2012270Z 
2026-05-16T05:21:29.2012566Z     Call Log:
2026-05-16T05:21:29.2013313Z     - Timeout 15000ms exceeded while waiting on the predicate
2026-05-16T05:21:29.2013940Z 
2026-05-16T05:21:29.2014584Z       55 |   //    once RoomRenderer.renderNew (Plan 06.1-05) has placed at least one tile
2026-05-16T05:21:29.2015832Z       56 |   //    via group.add(). mvp-room ships 324 tiles, so any positive count clears.
2026-05-16T05:21:29.2017074Z     > 57 |   await expect
2026-05-16T05:21:29.2017637Z          |   ^
2026-05-16T05:21:29.2018168Z       58 |     .poll(
2026-05-16T05:21:29.2018705Z       59 |       async () =>
2026-05-16T05:21:29.2019351Z       60 |         page.evaluate(
2026-05-16T05:21:29.2020649Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-tiles.e2e.test.ts:57:3
2026-05-16T05:21:29.2021475Z 
2026-05-16T05:21:29.2022474Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2024002Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-16T05:21:29.2025713Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2026441Z 
2026-05-16T05:21:29.2027329Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2030489Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/video.webm
2026-05-16T05:21:29.2032047Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2032687Z 
2026-05-16T05:21:29.2033597Z     Error Context: test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-16T05:21:29.2035399Z 
2026-05-16T05:21:29.2036260Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2037553Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T05:21:29.2038513Z     Usage:
2026-05-16T05:21:29.2038803Z 
2026-05-16T05:21:29.2039762Z         pnpm exec playwright show-trace test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-16T05:21:29.2041087Z 
2026-05-16T05:21:29.2041919Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2042554Z 
2026-05-16T05:21:29.2043283Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2043891Z 
2026-05-16T05:21:29.2044669Z     Error: RoomRenderer.renderNew must emit floor tile sprites for mvp-room (D-40 verify-bail flip / Plan 06.1-05)
2026-05-16T05:21:29.2045502Z 
2026-05-16T05:21:29.2046287Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:29.2047003Z 
2026-05-16T05:21:29.2047587Z     Expected: > [32m0[39m
2026-05-16T05:21:29.2048217Z     Received:   [31m0[39m
2026-05-16T05:21:29.2048635Z 
2026-05-16T05:21:29.2048901Z     Call Log:
2026-05-16T05:21:29.2049542Z     - Timeout 15000ms exceeded while waiting on the predicate
2026-05-16T05:21:29.2050388Z 
2026-05-16T05:21:29.2051044Z       55 |   //    once RoomRenderer.renderNew (Plan 06.1-05) has placed at least one tile
2026-05-16T05:21:29.2052242Z       56 |   //    via group.add(). mvp-room ships 324 tiles, so any positive count clears.
2026-05-16T05:21:29.2053504Z     > 57 |   await expect
2026-05-16T05:21:29.2054056Z          |   ^
2026-05-16T05:21:29.2054527Z       58 |     .poll(
2026-05-16T05:21:29.2055030Z       59 |       async () =>
2026-05-16T05:21:29.2055612Z       60 |         page.evaluate(
2026-05-16T05:21:29.2056537Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-tiles.e2e.test.ts:57:3
2026-05-16T05:21:29.2057237Z 
2026-05-16T05:21:29.2058197Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2059721Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-16T05:21:29.2061855Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2062530Z 
2026-05-16T05:21:29.2063343Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2065789Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-16T05:21:29.2067323Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2067933Z 
2026-05-16T05:21:29.2068864Z     Error Context: test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-16T05:21:29.2069853Z 
2026-05-16T05:21:29.2070869Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2072286Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T05:21:29.2073256Z     Usage:
2026-05-16T05:21:29.2073525Z 
2026-05-16T05:21:29.2074530Z         pnpm exec playwright show-trace test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-16T05:21:29.2075636Z 
2026-05-16T05:21:29.2076374Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2077060Z 
2026-05-16T05:21:29.2078274Z   11) [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace 
2026-05-16T05:21:29.2079270Z 
2026-05-16T05:21:29.2079993Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeAttached[2m([22m[2m)[22m failed
2026-05-16T05:21:29.2081028Z 
2026-05-16T05:21:29.2081581Z     Locator: locator('[data-nameplate="***"]')
2026-05-16T05:21:29.2082605Z     Expected: attached
2026-05-16T05:21:29.2083085Z     Timeout: 10000ms
2026-05-16T05:21:29.2083612Z     Error: element(s) not found
2026-05-16T05:21:29.2083988Z 
2026-05-16T05:21:29.2084227Z     Call log:
2026-05-16T05:21:29.2084981Z     [2m  - Expect "toBeAttached" with timeout 10000ms[22m
2026-05-16T05:21:29.2086069Z     [2m  - waiting for locator('[data-nameplate="***"]')[22m
2026-05-16T05:21:29.2086984Z 
2026-05-16T05:21:29.2087097Z 
2026-05-16T05:21:29.2087379Z       53 |     await expect(
2026-05-16T05:21:29.2088907Z       54 |       a.locator(`[data-nameplate="${accountB.username}"]`),
2026-05-16T05:21:29.2089832Z     > 55 |     ).toBeAttached({ timeout: 10_000 });
2026-05-16T05:21:29.2090734Z          |       ^
2026-05-16T05:21:29.2092470Z       56 |     await expect(
2026-05-16T05:21:29.2093238Z       57 |       b.locator(`[data-nameplate="${accountA.username}"]`),
2026-05-16T05:21:29.2094020Z       58 |     ).toBeAttached({ timeout: 10_000 });
2026-05-16T05:21:29.2094978Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08.e2e.test.ts:55:7
2026-05-16T05:21:29.2095661Z 
2026-05-16T05:21:29.2096579Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2098089Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/test-failed-1.png
2026-05-16T05:21:29.2099709Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2101124Z 
2026-05-16T05:21:29.2102739Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2104185Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/test-failed-2.png
2026-05-16T05:21:29.2106089Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2106672Z 
2026-05-16T05:21:29.2109676Z     Error Context: test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/error-context.md
2026-05-16T05:21:29.2111581Z 
2026-05-16T05:21:29.2112596Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2114503Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/trace.zip
2026-05-16T05:21:29.2115894Z     Usage:
2026-05-16T05:21:29.2116876Z 
2026-05-16T05:21:29.2117954Z         pnpm exec playwright show-trace test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/trace.zip
2026-05-16T05:21:29.2119408Z 
2026-05-16T05:21:29.2120655Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2121618Z 
2026-05-16T05:21:29.2122547Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2123236Z 
2026-05-16T05:21:29.2124707Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeAttached[2m([22m[2m)[22m failed
2026-05-16T05:21:29.2125340Z 
2026-05-16T05:21:29.2125722Z     Locator: locator('[data-nameplate="***"]')
2026-05-16T05:21:29.2126280Z     Expected: attached
2026-05-16T05:21:29.2126697Z     Timeout: 10000ms
2026-05-16T05:21:29.2127153Z     Error: element(s) not found
2026-05-16T05:21:29.2127457Z 
2026-05-16T05:21:29.2127592Z     Call log:
2026-05-16T05:21:29.2128528Z     [2m  - Expect "toBeAttached" with timeout 10000ms[22m
2026-05-16T05:21:29.2129966Z     [2m  - waiting for locator('[data-nameplate="***"]')[22m
2026-05-16T05:21:29.2130665Z 
2026-05-16T05:21:29.2130681Z 
2026-05-16T05:21:29.2130875Z       53 |     await expect(
2026-05-16T05:21:29.2131934Z       54 |       a.locator(`[data-nameplate="${accountB.username}"]`),
2026-05-16T05:21:29.2132793Z     > 55 |     ).toBeAttached({ timeout: 10_000 });
2026-05-16T05:21:29.2133289Z          |       ^
2026-05-16T05:21:29.2137070Z       56 |     await expect(
2026-05-16T05:21:29.2139364Z       57 |       b.locator(`[data-nameplate="${accountA.username}"]`),
2026-05-16T05:21:29.2140539Z       58 |     ).toBeAttached({ timeout: 10_000 });
2026-05-16T05:21:29.2141890Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08.e2e.test.ts:55:7
2026-05-16T05:21:29.2142646Z 
2026-05-16T05:21:29.2143569Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2162657Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/test-failed-1.png
2026-05-16T05:21:29.2164478Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2165187Z 
2026-05-16T05:21:29.2166100Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2167670Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/test-failed-2.png
2026-05-16T05:21:29.2169394Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2170334Z 
2026-05-16T05:21:29.2171342Z     Error Context: test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/error-context.md
2026-05-16T05:21:29.2172418Z 
2026-05-16T05:21:29.2173329Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2174866Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/trace.zip
2026-05-16T05:21:29.2176022Z     Usage:
2026-05-16T05:21:29.2176454Z 
2026-05-16T05:21:29.2177553Z         pnpm exec playwright show-trace test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/trace.zip
2026-05-16T05:21:29.2178704Z 
2026-05-16T05:21:29.2179683Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2181076Z 
2026-05-16T05:21:29.2182269Z   12) [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) 
2026-05-16T05:21:29.2183334Z 
2026-05-16T05:21:29.2184182Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:29.2184950Z 
2026-05-16T05:21:29.2185484Z     Locator: locator('form#login-form, #login-form, #username')
2026-05-16T05:21:29.2186633Z     Expected: visible
2026-05-16T05:21:29.2187218Z     Timeout: 5000ms
2026-05-16T05:21:29.2187811Z     Error: element(s) not found
2026-05-16T05:21:29.2188256Z 
2026-05-16T05:21:29.2188523Z     Call log:
2026-05-16T05:21:29.2189360Z     [2m  - Expect "toBeVisible" with timeout 5000ms[22m
2026-05-16T05:21:29.2190819Z     [2m  - waiting for locator('form#login-form, #login-form, #username')[22m
2026-05-16T05:21:29.2191528Z 
2026-05-16T05:21:29.2191647Z 
2026-05-16T05:21:29.2191909Z       36 |
2026-05-16T05:21:29.2192670Z       37 |     // Should navigate back to LoginScene (login form heading visible)
2026-05-16T05:21:29.2193945Z     > 38 |     await expect(page.locator('form#login-form, #login-form, #username')).toBeVisible({
2026-05-16T05:21:29.2195077Z          |                                                                           ^
2026-05-16T05:21:29.2195881Z       39 |       timeout: 5_000,
2026-05-16T05:21:29.2196562Z       40 |     });
2026-05-16T05:21:29.2197092Z       41 |
2026-05-16T05:21:29.2197942Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/logout.e2e.test.ts:38:75
2026-05-16T05:21:29.2198708Z 
2026-05-16T05:21:29.2199644Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2201587Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/test-failed-1.png
2026-05-16T05:21:29.2203295Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2204037Z 
2026-05-16T05:21:29.2204956Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2206467Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/video.webm
2026-05-16T05:21:29.2208103Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2208803Z 
2026-05-16T05:21:29.2209799Z     Error Context: test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/error-context.md
2026-05-16T05:21:29.2211116Z 
2026-05-16T05:21:29.2212042Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2213533Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/trace.zip
2026-05-16T05:21:29.2214639Z     Usage:
2026-05-16T05:21:29.2214995Z 
2026-05-16T05:21:29.2216077Z         pnpm exec playwright show-trace test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/trace.zip
2026-05-16T05:21:29.2217453Z 
2026-05-16T05:21:29.2218272Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2218964Z 
2026-05-16T05:21:29.2219812Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2220778Z 
2026-05-16T05:21:29.2221958Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:29.2222742Z 
2026-05-16T05:21:29.2223248Z     Locator: locator('form#login-form, #login-form, #username')
2026-05-16T05:21:29.2224099Z     Expected: visible
2026-05-16T05:21:29.2224699Z     Timeout: 5000ms
2026-05-16T05:21:29.2225303Z     Error: element(s) not found
2026-05-16T05:21:29.2225740Z 
2026-05-16T05:21:29.2226013Z     Call log:
2026-05-16T05:21:29.2226774Z     [2m  - Expect "toBeVisible" with timeout 5000ms[22m
2026-05-16T05:21:29.2227962Z     [2m  - waiting for locator('form#login-form, #login-form, #username')[22m
2026-05-16T05:21:29.2228647Z 
2026-05-16T05:21:29.2228766Z 
2026-05-16T05:21:29.2229027Z       36 |
2026-05-16T05:21:29.2229758Z       37 |     // Should navigate back to LoginScene (login form heading visible)
2026-05-16T05:21:29.2231281Z     > 38 |     await expect(page.locator('form#login-form, #login-form, #username')).toBeVisible({
2026-05-16T05:21:29.2232582Z          |                                                                           ^
2026-05-16T05:21:29.2233349Z       39 |       timeout: 5_000,
2026-05-16T05:21:29.2234031Z       40 |     });
2026-05-16T05:21:29.2234565Z       41 |
2026-05-16T05:21:29.2235408Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/logout.e2e.test.ts:38:75
2026-05-16T05:21:29.2236182Z 
2026-05-16T05:21:29.2237133Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2238746Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/test-failed-1.png
2026-05-16T05:21:29.2240780Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2241435Z 
2026-05-16T05:21:29.2242196Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2243447Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/video.webm
2026-05-16T05:21:29.2244879Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2245432Z 
2026-05-16T05:21:29.2246404Z     Error Context: test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/error-context.md
2026-05-16T05:21:29.2247547Z 
2026-05-16T05:21:29.2248466Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2250647Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/trace.zip
2026-05-16T05:21:29.2251836Z     Usage:
2026-05-16T05:21:29.2252191Z 
2026-05-16T05:21:29.2253385Z         pnpm exec playwright show-trace test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/trace.zip
2026-05-16T05:21:29.2254579Z 
2026-05-16T05:21:29.2255398Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2256365Z 
2026-05-16T05:21:29.2257992Z   13) [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop 
2026-05-16T05:21:29.2259369Z 
2026-05-16T05:21:29.2260431Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoMatch[2m([22m[32mexpected[39m[2m)[22m
2026-05-16T05:21:29.2261230Z 
2026-05-16T05:21:29.2261761Z     Expected pattern: [32m/^0028-NaviRunR_\d{3}$/[39m
2026-05-16T05:21:29.2262851Z     Received string:  [31m"0000-NaviStandD_000"[39m
2026-05-16T05:21:29.2263414Z 
2026-05-16T05:21:29.2263664Z       32 |
2026-05-16T05:21:29.2264461Z       33 |     // Frame key must match Run R pattern: '0028-NaviRunR_NNN'
2026-05-16T05:21:29.2265440Z     > 34 |     expect(frameWhileRunning).toMatch(/^0028-NaviRunR_\d{3}$/);
2026-05-16T05:21:29.2266274Z          |                               ^
2026-05-16T05:21:29.2266928Z       35 |
2026-05-16T05:21:29.2267551Z       36 |     // Release right arrow and wait for stop
2026-05-16T05:21:29.2268350Z       37 |     await page.keyboard.up('ArrowRight');
2026-05-16T05:21:29.2269389Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/sprite-state.e2e.test.ts:34:31
2026-05-16T05:21:29.2270538Z 
2026-05-16T05:21:29.2271472Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2273080Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/test-failed-1.png
2026-05-16T05:21:29.2274737Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2275417Z 
2026-05-16T05:21:29.2276242Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2277777Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/video.webm
2026-05-16T05:21:29.2279425Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2280324Z 
2026-05-16T05:21:29.2281318Z     Error Context: test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/error-context.md
2026-05-16T05:21:29.2282377Z 
2026-05-16T05:21:29.2283251Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2284718Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/trace.zip
2026-05-16T05:21:29.2286073Z     Usage:
2026-05-16T05:21:29.2286410Z 
2026-05-16T05:21:29.2287426Z         pnpm exec playwright show-trace test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/trace.zip
2026-05-16T05:21:29.2288507Z 
2026-05-16T05:21:29.2289255Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2289989Z 
2026-05-16T05:21:29.2291516Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2292176Z 
2026-05-16T05:21:29.2292896Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:29.2293585Z 
2026-05-16T05:21:29.2293960Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T05:21:29.2294855Z     Expected: visible
2026-05-16T05:21:29.2295931Z     Timeout: 15000ms
2026-05-16T05:21:29.2296497Z     Error: element(s) not found
2026-05-16T05:21:29.2296967Z 
2026-05-16T05:21:29.2297212Z     Call log:
2026-05-16T05:21:29.2297931Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T05:21:29.2298906Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T05:21:29.2301310Z 
2026-05-16T05:21:29.2301420Z 
2026-05-16T05:21:29.2301695Z        at fixtures.ts:172
2026-05-16T05:21:29.2302044Z 
2026-05-16T05:21:29.2302345Z       170 |  */
2026-05-16T05:21:29.2303280Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T05:21:29.2304541Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T05:21:29.2305523Z           |                                                                ^
2026-05-16T05:21:29.2306336Z       173 |     timeout: 15_000,
2026-05-16T05:21:29.2306911Z       174 |   });
2026-05-16T05:21:29.2307325Z       175 | }
2026-05-16T05:21:29.2308128Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T05:21:29.2309314Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/sprite-state.e2e.test.ts:22:11
2026-05-16T05:21:29.2309970Z 
2026-05-16T05:21:29.2311124Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2312515Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/test-failed-1.png
2026-05-16T05:21:29.2313989Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2314548Z 
2026-05-16T05:21:29.2315273Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2316549Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/video.webm
2026-05-16T05:21:29.2317940Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2318522Z 
2026-05-16T05:21:29.2319437Z     Error Context: test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/error-context.md
2026-05-16T05:21:29.2321128Z 
2026-05-16T05:21:29.2321942Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2323277Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/trace.zip
2026-05-16T05:21:29.2324679Z     Usage:
2026-05-16T05:21:29.2324949Z 
2026-05-16T05:21:29.2325998Z         pnpm exec playwright show-trace test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/trace.zip
2026-05-16T05:21:29.2327045Z 
2026-05-16T05:21:29.2327730Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2328293Z 
2026-05-16T05:21:29.2329320Z   14) [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block north wall (D-62 anti-revert) 
2026-05-16T05:21:29.2330995Z 
2026-05-16T05:21:29.2331704Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:29.2332312Z 
2026-05-16T05:21:29.2332674Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T05:21:29.2333270Z     Expected: visible
2026-05-16T05:21:29.2333722Z     Timeout: 15000ms
2026-05-16T05:21:29.2334903Z     Error: element(s) not found
2026-05-16T05:21:29.2335364Z 
2026-05-16T05:21:29.2335633Z     Call log:
2026-05-16T05:21:29.2336318Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T05:21:29.2337265Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T05:21:29.2337797Z 
2026-05-16T05:21:29.2337923Z 
2026-05-16T05:21:29.2338171Z        at fixtures.ts:172
2026-05-16T05:21:29.2338493Z 
2026-05-16T05:21:29.2338751Z       170 |  */
2026-05-16T05:21:29.2339433Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T05:21:29.2340901Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T05:21:29.2341831Z           |                                                                ^
2026-05-16T05:21:29.2342486Z       173 |     timeout: 15_000,
2026-05-16T05:21:29.2342966Z       174 |   });
2026-05-16T05:21:29.2343402Z       175 | }
2026-05-16T05:21:29.2344214Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T05:21:29.2345688Z         at loginAndAssertTiles (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-collision-boundary.spec.ts:38:9)
2026-05-16T05:21:29.2347153Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-collision-boundary.spec.ts:137:5
2026-05-16T05:21:29.2347980Z 
2026-05-16T05:21:29.2348739Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2351359Z     test-results/cli-08-collision-boundary--88271-orth-wall-D-62-anti-revert--chromium/test-failed-1.png
2026-05-16T05:21:29.2352961Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2353555Z 
2026-05-16T05:21:29.2354300Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2355468Z     test-results/cli-08-collision-boundary--88271-orth-wall-D-62-anti-revert--chromium/video.webm
2026-05-16T05:21:29.2356830Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2357352Z 
2026-05-16T05:21:29.2358186Z     Error Context: test-results/cli-08-collision-boundary--88271-orth-wall-D-62-anti-revert--chromium/error-context.md
2026-05-16T05:21:29.2359037Z 
2026-05-16T05:21:29.2359786Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2361212Z     test-results/cli-08-collision-boundary--88271-orth-wall-D-62-anti-revert--chromium/trace.zip
2026-05-16T05:21:29.2362437Z     Usage:
2026-05-16T05:21:29.2362695Z 
2026-05-16T05:21:29.2363601Z         pnpm exec playwright show-trace test-results/cli-08-collision-boundary--88271-orth-wall-D-62-anti-revert--chromium/trace.zip
2026-05-16T05:21:29.2364607Z 
2026-05-16T05:21:29.2365298Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2365849Z 
2026-05-16T05:21:29.2366964Z   15) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall 
2026-05-16T05:21:29.2367708Z 
2026-05-16T05:21:29.2368384Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:29.2368984Z 
2026-05-16T05:21:29.2369379Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T05:21:29.2369951Z     Expected: visible
2026-05-16T05:21:29.2370703Z     Timeout: 15000ms
2026-05-16T05:21:29.2371168Z     Error: element(s) not found
2026-05-16T05:21:29.2371571Z 
2026-05-16T05:21:29.2371901Z     Call log:
2026-05-16T05:21:29.2372783Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T05:21:29.2373740Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T05:21:29.2374281Z 
2026-05-16T05:21:29.2374410Z 
2026-05-16T05:21:29.2374652Z        at fixtures.ts:172
2026-05-16T05:21:29.2374973Z 
2026-05-16T05:21:29.2375224Z       170 |  */
2026-05-16T05:21:29.2375896Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T05:21:29.2376927Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T05:21:29.2377773Z           |                                                                ^
2026-05-16T05:21:29.2378434Z       173 |     timeout: 15_000,
2026-05-16T05:21:29.2378927Z       174 |   });
2026-05-16T05:21:29.2379368Z       175 | }
2026-05-16T05:21:29.2380464Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T05:21:29.2382031Z         at loginAndAssertTiles (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:24:9)
2026-05-16T05:21:29.2383472Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:119:5
2026-05-16T05:21:29.2384201Z 
2026-05-16T05:21:29.2384945Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2386220Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/test-failed-1.png
2026-05-16T05:21:29.2387714Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2388289Z 
2026-05-16T05:21:29.2389077Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2390589Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/video.webm
2026-05-16T05:21:29.2392211Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2392742Z 
2026-05-16T05:21:29.2393566Z     Error Context: test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/error-context.md
2026-05-16T05:21:29.2394458Z 
2026-05-16T05:21:29.2395290Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2396850Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/trace.zip
2026-05-16T05:21:29.2397795Z     Usage:
2026-05-16T05:21:29.2398065Z 
2026-05-16T05:21:29.2398965Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/trace.zip
2026-05-16T05:21:29.2399881Z 
2026-05-16T05:21:29.2400765Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2401376Z 
2026-05-16T05:21:29.2402297Z   16) [chromium] › test/e2e/cli-08-nameplate-offset.e2e.test.ts:30:1 › nameplate sits above sprite top (D-45) 
2026-05-16T05:21:29.2403041Z 
2026-05-16T05:21:29.2403717Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:29.2404324Z 
2026-05-16T05:21:29.2404710Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T05:21:29.2405282Z     Expected: visible
2026-05-16T05:21:29.2405776Z     Timeout: 15000ms
2026-05-16T05:21:29.2406238Z     Error: element(s) not found
2026-05-16T05:21:29.2406624Z 
2026-05-16T05:21:29.2406834Z     Call log:
2026-05-16T05:21:29.2407459Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T05:21:29.2408356Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T05:21:29.2408871Z 
2026-05-16T05:21:29.2408997Z 
2026-05-16T05:21:29.2409233Z        at fixtures.ts:172
2026-05-16T05:21:29.2409545Z 
2026-05-16T05:21:29.2409796Z       170 |  */
2026-05-16T05:21:29.2410641Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T05:21:29.2411658Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T05:21:29.2412502Z           |                                                                ^
2026-05-16T05:21:29.2413131Z       173 |     timeout: 15_000,
2026-05-16T05:21:29.2413590Z       174 |   });
2026-05-16T05:21:29.2414028Z       175 | }
2026-05-16T05:21:29.2414819Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T05:21:29.2416170Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-nameplate-offset.e2e.test.ts:37:9
2026-05-16T05:21:29.2416875Z 
2026-05-16T05:21:29.2417825Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2419137Z     test-results/cli-08-nameplate-offset.e2-11164-sits-above-sprite-top-D-45--chromium/test-failed-1.png
2026-05-16T05:21:29.2421039Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2421665Z 
2026-05-16T05:21:29.2422477Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2423731Z     test-results/cli-08-nameplate-offset.e2-11164-sits-above-sprite-top-D-45--chromium/video.webm
2026-05-16T05:21:29.2425377Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2425916Z 
2026-05-16T05:21:29.2426738Z     Error Context: test-results/cli-08-nameplate-offset.e2-11164-sits-above-sprite-top-D-45--chromium/error-context.md
2026-05-16T05:21:29.2427628Z 
2026-05-16T05:21:29.2428461Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2429740Z     test-results/cli-08-nameplate-offset.e2-11164-sits-above-sprite-top-D-45--chromium/trace.zip
2026-05-16T05:21:29.2430936Z     Usage:
2026-05-16T05:21:29.2431215Z 
2026-05-16T05:21:29.2432168Z         pnpm exec playwright show-trace test-results/cli-08-nameplate-offset.e2-11164-sits-above-sprite-top-D-45--chromium/trace.zip
2026-05-16T05:21:29.2433145Z 
2026-05-16T05:21:29.2433833Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2434376Z 
2026-05-16T05:21:29.2435584Z   17) [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:60:1 › CLI-08 D-55d — B joins after A: B sees A in Stand* (no TeleIn anim for pre-existing remote) 
2026-05-16T05:21:29.2436628Z 
2026-05-16T05:21:29.2437355Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-16T05:21:29.2437994Z 
2026-05-16T05:21:29.2438408Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-16T05:21:29.2439017Z     Expected: visible
2026-05-16T05:21:29.2439503Z     Timeout: 15000ms
2026-05-16T05:21:29.2439994Z     Error: element(s) not found
2026-05-16T05:21:29.2440611Z 
2026-05-16T05:21:29.2440836Z     Call log:
2026-05-16T05:21:29.2441472Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-16T05:21:29.2442362Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-16T05:21:29.2442879Z 
2026-05-16T05:21:29.2443003Z 
2026-05-16T05:21:29.2443242Z        at fixtures.ts:172
2026-05-16T05:21:29.2443544Z 
2026-05-16T05:21:29.2443810Z       170 |  */
2026-05-16T05:21:29.2444519Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-16T05:21:29.2445607Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-16T05:21:29.2446486Z           |                                                                ^
2026-05-16T05:21:29.2447125Z       173 |     timeout: 15_000,
2026-05-16T05:21:29.2447588Z       174 |   });
2026-05-16T05:21:29.2448020Z       175 | }
2026-05-16T05:21:29.2448874Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-16T05:21:29.2450639Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:91:11
2026-05-16T05:21:29.2451479Z 
2026-05-16T05:21:29.2452284Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2453539Z     test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium/test-failed-1.png
2026-05-16T05:21:29.2455285Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2455877Z 
2026-05-16T05:21:29.2456641Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-16T05:21:29.2458174Z     test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium/test-failed-2.png
2026-05-16T05:21:29.2460426Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2462202Z 
2026-05-16T05:21:29.2463078Z     Error Context: test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium/error-context.md
2026-05-16T05:21:29.2463988Z 
2026-05-16T05:21:29.2464967Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-16T05:21:29.2466414Z     test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium/trace.zip
2026-05-16T05:21:29.2467478Z     Usage:
2026-05-16T05:21:29.2467821Z 
2026-05-16T05:21:29.2468795Z         pnpm exec playwright show-trace test-results/cli-08-snapshot-no-spawn-a-0d3d7-im-for-pre-existing-remote--chromium/trace.zip
2026-05-16T05:21:29.2469856Z 
2026-05-16T05:21:29.2470973Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-16T05:21:29.2471658Z 
2026-05-16T05:21:29.2471934Z   13 failed
2026-05-16T05:21:29.2473275Z     [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) 
2026-05-16T05:21:29.2475479Z     [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) 
2026-05-16T05:21:29.2477708Z     [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) 
2026-05-16T05:21:29.2479923Z     [chromium] › test/e2e/cli-08-direction-convergence.spec.ts:70:1 › CLI-08 D-58c — dual-tab direction convergence (REQ-SRV-03 server-authoritative) 
2026-05-16T05:21:29.2482598Z     [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:19:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene 
2026-05-16T05:21:29.2484755Z     [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) 
2026-05-16T05:21:29.2486802Z     [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) 
2026-05-16T05:21:29.2489180Z     [chromium] › test/e2e/cli-08-resume-render.spec.ts:30:1 › cli-08-resume-render — CLI-08 resume render — Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works 
2026-05-16T05:21:29.2495373Z     [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:138:1 › CLI-08 D-55d — A joined first: A DOES see TeleIn anim when B joins during session (gating preserves new-join semantics) 
2026-05-16T05:21:29.2498045Z     [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) 
2026-05-16T05:21:29.2499995Z     [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace 
2026-05-16T05:21:29.2502171Z     [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) 
2026-05-16T05:21:29.2504750Z     [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop 
2026-05-16T05:21:29.2506103Z   4 flaky
2026-05-16T05:21:29.2507325Z     [chromium] › test/e2e/cli-08-collision-boundary.spec.ts:132:3 › derived collision_polys block north wall (D-62 anti-revert) 
2026-05-16T05:21:29.2509038Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall 
2026-05-16T05:21:29.2510871Z     [chromium] › test/e2e/cli-08-nameplate-offset.e2e.test.ts:30:1 › nameplate sits above sprite top (D-45) 
2026-05-16T05:21:29.2512846Z     [chromium] › test/e2e/cli-08-snapshot-no-spawn-anim.spec.ts:60:1 › CLI-08 D-55d — B joins after A: B sees A in Stand* (no TeleIn anim for pre-existing remote) 
2026-05-16T05:21:29.2514057Z   20 passed (11.1m)
2026-05-16T05:21:29.2611821Z /home/runner/work/rebno/rebno/apps/client:
2026-05-16T05:21:29.2613679Z  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @rebno/client@0.1.0 test:e2e: `playwright test`
2026-05-16T05:21:29.2614833Z Exit status 1
2026-05-16T05:21:29.2842013Z ##[error]Process completed with exit code 1.
